/*
 * main.cpp
 *
 *  Created on: Sep 4, 2012
 *      Author: martin
 */
#include"Heap.h"
#include<iostream>
#include<cassert>
#include"Registro.h"

using namespace std;

#define IMP(DATO) \
	cout<<"->"<<#DATO<<" es = "<<DATO<<endl;
#define TEST(I) \
	cout<<"->"<<"test "<<I<<" finalizo correctamente -------\n";

void testInsersion(){
	const unsigned int TAMANIO= 10,INSERSIONES= 5;
	Heap<int> h(TAMANIO);

	for(int i=0;i<INSERSIONES;i++)
		h.insertar(i+20);
	assert(h.getTamanio()== INSERSIONES);
	TEST(1);

	h.insertar(19);
	int raiz= h.verRaiz();
	assert(raiz== 19);
	TEST(2);

}//FUNCIONA

void testBorrado(){
	const unsigned int TAMANIO= 10,INSERSIONES= 5;
	Heap<int> h(TAMANIO);

	for(int i=0;i<INSERSIONES;i++)
		h.insertar(i+1);
	assert(h.verRaiz()== 1);
	assert(h.remover()== 1);
	IMP(h.verRaiz());
	assert(h.verRaiz()== 2);
	TEST(1);
}//FUNCIONA

void testOrden(){
	const unsigned int TAM= 10;
	Heap<int> h(TAM);

	for(int i=TAM;i>0;i--)
		h.insertar(i);

	assert(h.verRaiz()== 1);
	TEST(1);

	for(int i=1; !h.estaVacio() ; i++)
		assert(h.remover()== i);
	TEST(2);
}//FUNCIONA

void testConRegistros(){
	const unsigned int TAM= 10;
	Heap<Registro>* h= new Heap<Registro>(TAM);
	Registro r1(1);

	h->insertar(r1);
	cout<<"->antes llamada a delete h\n";
	delete h;
	cout<<"->despues de llamada a delete h \n";
}//FUNCIONA

int main(){
	assert(sizeof(Registro)== sizeof(unsigned int));

}//main



